【レポート】Google Cloud ではじめるリアルタイム分析 〜ユースケースに合ったアーキテクチャやデザインパターンの解説〜 #GoogleCloudDay
本記事は2022/04/19(火)に行われた「Google Cloud Day: Digital ’22」 のデータ分析セッション「Google Cloud ではじめるリアルタイム分析 〜ユースケースに合ったアーキテクチャやデザインパターンの解説〜」についてのレポート記事となります。
セッション情報
登壇者
- Google Cloud 西村 哲徳 様
- Data Solution and Technology Engineering Data Analytics Specialist
セッション概要
「リアルタイム分析をしたい」、でも「データをリアルタイムに分析することで何ができるようになるのかがわからない」といった課題をお持ちではありませんか?このセッションでは、どのようなアーキテクチャが適しているのかがわからないと言った方に Google の分析デザインパターンをベースにアーキテクチャや用途について解説します。
取り上げる主な Google Cloud 製品 / サービス
- BigQuery
- Cloud Dataflow(以下、Dataflow)
- Cloud Pub/Sub(以下、Pub/Sub)
レポート
アジェンダ
- リアルタイム分析のすすめ
- ユースケースから見るデザインパターン
リアルタイム分析のすすめ
リアルタイム分析の必要性
下記の理由から、「リアルタイム分析」は競争優位性を高めるために必要とされている
- 機会損失を防ぐ
- 変化の早い状況への適用
- より適切なデータポイントを収集
- 誤った判断を防ぐ
- 鮮度の高いデータでの意思決定
- タイムラグによる選択肢の減少を防ぐ
- 低コストの打ち手が取れる
- 意思決定の精度を高める...など
全ての業界に変革をもたらすリアルタイム分析
- 業界に関係なくビジネスに変革をもたらす可能性が非常に高い
- 機械学習との親和性が高い
- 「不正検出」や「レコメンド」など
従来のプラットフォームでのリアルタイム処理の難しさ
下記のような課題がある(一部抜粋)
- 増加するデータソースの取り込み
- トランザクションデータやIoTデータなどの膨大なデータを扱う必要がある
- 分断されたツール間の連携
- データ収集から機械学習までシームレスな連携処理が必要など
- 無制限なデータに対するウィンドウ集計
- 集計期間
- ウィンドウの種類
- トリガー
- イベント発生時間と処理時間の違い
- 遅延データの取り扱い
Google Cloudが提供するリアルタイム分析ソリューション
- 堅牢なデータ収集サービス
- データの冗長性を抑えながら複数のサブスクライバーにデータをパブリッシュする信頼性の高いデータ/イベントの取り込み
- 統合されたストリームとバッチ処理
- ストリーム処理によりデータとイベントがアクション可能な洞察に変わる
- バッチとストリームの統合により ラムダ アーキテクチャの負荷の軽減
- 様々なウィンドウ集計とウォーターマークによる遅延データのハンドリング
- サーバレスアーキテクチャ
- リアルタイムソリューションのキーである大量データに対応する拡張性
- スパイクの調整やプロビジョニングからの解放
- 包括的な分析ツール
- DWH、機械学習、オンラインアプリケーションとの親和性
- 柔軟性の高さ
- 既存のスキルセットにあわせて移行可能なプラットフォーム
Pub/Sub
リアルタイム分析のためのメッセージングとイベントの取り込み
- 拡張性、耐久性のあるイベントの取込みと配信
- サーバーレス、自動スケーリング、自動プロビジョニングなど
- 拡張性のある パブリッシュ/サブスクライブ パターン
- グローバルルーティング
- 深いインテグレーション
- Dataflowを使用したスケーラブルな分析、Cloud Functionsを使用したサーバーレスアクションなど
Dataflow
ストリーミングおよびバッチデータ処理のための高度に自動化された自己修復データパイプライン実行
- 非常にシンプル
- サーバーレス、自動プロビジョニング、および自己修復
- 自動化されたパフォーマンス、ワークバランシング、統合されたバッチとストリーミング
- MLへのアクセス性
- すぐに利用可能な MLOps、ML推論、GPUと大規模データ処理
- ベストなOSSと最適化されたプラットフォーム
- Apache Beam SDKによるオープンイノベーション
- 規模に合わせて構築
- 水平スケーリングと垂直スケーリングの両方に対応するように設計および構築
- 使用率を最大化してコストを節約し、価値実現までの時間を短縮
「無制限なデータに対するウィンドウ集計」の課題に対して、下記を用いて解決することが可能
- Dataflowの提供するウィンドウ
- タンブリングウィンドウ : データストリームを重なりなく分ける一定の時間間隔
- ホッピングウィンドウ : 指定した期間で重なりあうような一定の時間間隔
- セッションウィンドウ : あるキーの次の新しいデータが到着するまでのギャップ期間を指定し、そのギャップ期間を超えると新しいセッションとしてウィンドウを計算する
- ウォーターマークによるイベント時間と処理時間の違いを考慮した集計
- 特定のウィンドウ内のすべてのデータがパイプラインに到着したと予想する
- ウォーターマークを超えて到着した遅延データの取り扱いも制御することが可能
ユースケースから見るデザインパターン
セッションでは、4つのユースケースについて紹介されてました。 ここでは、2つのユースケースについて記載します。
クレジットカード不正のリアルタイム検出
BigQueryを2つの側面(BigQuery MLでモデル作成 / 不正検出状況のデータ格納)で使われているのが印象的でした。
動画クリップ内のオブジェクト検出
Micro BatchingでCloud Video Intelligence APIをCallして、より処理時間を短縮する工夫をされているのが印象的でした。 (特にリアルタイム分析では、より処理効率を良くするような設計が重要ですね!)
データ分析の設計パターン
セッション内で紹介されていた下記のページに、いろんな活用パターンが載っていました。
こちらもあわせて要チェックですね!
まとめ
- リアルタイム分析は競争優位性を高める
- 機会損失の防止
- 打ち手を増やす
- 意思決定の精度を高める
- リアルタイム分析実現にともなう困難は、Google Cloudで軽減することが可能
- 拡張性
- オープンでインテリジェントな統合されたソリューション
- シンプルなアーキテクチャで様々なユースケースをサポート
- データ分析の設計パターン
所感
「リアルタイム分析」という言葉は聞いたことはあったり、なんとなく言葉からイメージはしやすかったのですが、実際のユースケースや課題などについては、完全に無知であったので非常に勉強になりました!
個人的には「クレジットカード不正のリアルタイム検出」のユースケースが非常に興味深かったです!
いろんな業界で活用できる技術であることから今後のニーズもますます増えるような印象を受けました。
また個人的に触れてないPub/SubやDataflowについての概要もつかめたので、実際に触ってみようと思います〜。
セッション自体もQAを含めて約30分のコンパクトな内容になっているので、是非視聴してみることをお勧めいたします!
以上、DA(データアナリティクス)事業本部のナガマサでした。